home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 23
/
Amiga Format AFCD23 (Feb 1998, Issue 107).iso
/
+look_here_1st!+
/
reader_requests
/
zkick301
/
zkick.doc
< prev
next >
Wrap
Text File
|
1997-11-28
|
10KB
|
267 lines
ZKick V3.01 -- Copyright (C) 1991 by Daniel Zenchelsky
This program may be freely copied, as long as all copyright
notices are left intact and unchanged.
-----------------------------------------------------------------------------
Overview
--------
ZKick is a Kickstart 2.0 kickfile loader, similar to KickIt by
Bryce Nesbitt, but with several advantages. First of all, ZKick will work
in ANY Amiga with a 512K or larger ram board at ANY (*) memory location, no
matter which slot it's in. Second, when ZKick loads Kickstart, it survives
a reboot! When you hit CTRL-AMIGA-AMIGA, you are placed back in Kickstart
2.0. This feature can be disabled with the "-die" option.
ZKick 3.0 is now able to relocate Kickstart 2.0 V37.175 to *ANY*
location. It no longer requires ram at $200000. If you are using a
previous version of Kickstart, ZKick can not relocate Kickstart and
therefore you must have a 512K or greater ram board at $200000.
NOTE: If you place Kickstart in the middle of a ram board, ZKick
will divide the ram board into two logical devices. It will then tell you
that it found more devices than physically exist. This is OK.
NOTE: ZKick is only useful for developers who have an Amiga
500/2000 kickfile from Commodore. It will NOT work with a 3000 Kickstart
file.
(*) Due to the nature of BCPL, Kickstart 2.0 must be longword
aligned.
Theory of operation
-------------------
ZKick works by building a table of expansion devices under
Kickstart 1.3 (1.2), adding a ROMTag to the resident list, patching
ColdCapture and CoolCapture, loading Kickstart 2.0 into memory at $200000
and reseting the machine. When 1.3 starts up, the ColdCapture routine
skips the >512k chip ram test normally done by exec. Normally exec clears
all of chip ram if it finds more than 512k of it. Then, the ColdCapture
routine patches exec to keep it from stomping on the first few bytes of
memory at $200000. Expansion library (still under 1.3) then configures all
of the AutoConfig devices. Next, our ROMTag is executed, which detects
that it is still under 1.3 and jumps to the start of Kickstart 2.0.
Now we're running under Kickstart 2.0. Expansion library is the
first thing executed, but it doesn't find any expansion devices because
they were all configured by the 1.3 expansion library. Then the ROMTag is
again executed. It adds all of the expansion devices previously configured
by 1.3 expansion library to the 2.0 expansion library's ConfigDev list, and
all of the memory boards to exec's memory list. From here on the normal
startup is taken, during which each board is initialized.
Requirements
------------
Setup A:
1) Using Kickstart 2.0 V37.175
2) Total memory must be 1.5M or greater.
3) There must be a 512k or greater ram board.
OR
Setup B:
1) Using Kickstart 2.0 V37.175
2) Total memory must be 1M or greater.
3) There must be a 512k or greater ram board at $C00000
(for example, an A501)
OR
Setup C:
1) Using another version of Kickstart 2.0
2) Total memory must be 1.5M or greater.
3) There must be a 512k or greater ram board at $200000
Usage
-----
ZKick [options] kickfile
Options
-------
The "-v175" option enables Kickstart relocation. If you are not
using Kickstart V37.175, DO NOT USE THIS OPTION! If you are using
Kickstart V37.175, you must put this option before the "-c0" or "-start"
option.
NOTE: In order to relocate Kickstart 2.0 V37.175, I have created
my own tools for determining all of the necessary relocation offsets, and
included the proper offsets for V37.175 in ZKick. Although I am 99.99%
sure that these are the correct offsets, they are in no way "official," and
I can not and will not be held liable for any damage cause by using them.
IF YOU USE THE "-v175" OPTION, YOU DO SO AT YOUR OWN RISK. However, I
strongly believe that these offsets are correct, and if you have any
problems, please let me know.
The "-start <hex address>" option allows the user to specify the
starting location of Kickstart. You must have at least 512k of ram at the
specified address. This option requires the "-v175" option, and is not
compatible with the "-c0" option.
The "-c0" option is used to load Kickstart into $C00000 memory, and
will allow ZKick to be used on a 1 meg machine. Before using this command,
you must remove $C00000 ram from the memory list by using "NoC0Ram."
Specifically, it has the following effects: 1) sets the start address to
$C00000, 2) doesn't check for ram at $C00000, 3) loads Kickstart directly
into $C00000 with no buffering, and 4) patches Kickstart 2.0 to ignore
$C00000 ram. This option requires the "-v175" option, and is not
compatible with the "-start" option.
The "-debug" option will let you see all kinds of debugging
information.
The "-print" option will cause ZKick to dump more debugging
information to the printer.
The "-die" option is used to tell ZKick not to survive reboots, so
that when the machine is reset, the Kickstart ROM will be run instead.
The "-mmu" option will cause ZKick to reset the MMU, if it exists.
*NOTE* This is different than the previous versions.
The "-noreset" option causes ZKick to skip the initial RESET and
just jump into Kickstart. This option is useful with some GVP boards which
do not pass the RESET signal properly.
The "-nochecksum" option will keep ZKick from going to 1.3 if the
Kickstart checksum is not valid.
(Using the options "-noreset" and "-nochecksum" together will make ZKick
behave as it did in version 2.01)
KillZKick
---------
Also included is the program KillZKick. KillZKick removes ZKick
from memory, and reboots the system with the Kickstart ROM.
NoC0Ram
-------
NoC0Ram is a utility which removes $C00000 ram from the memory
list. In order to do this, the machine is REBOOTED.
YOU MUST USE NOC0RAM BEFORE LOADING KICKSTART INTO $C00000 RAM.
It is necessary to remove this ram from the memory list before
using ZKick, because if it is not removed, exec.library will put ExecBase
into it, and ExecBase will then be erased when ZKick loads Kickstart.
NoC0Ram will only reboot the system if you are running under
1.2/1.3 and if exec believes there is $C00000 ram. Therefore, it is safe
to put in your startup-sequence, without fear of it continually rebooting
the system.
Troubleshooting
---------------
If you can't get ZKick to work, make sure you're using a 500/2000
version of Kickstart, version 36.141 (Release 2.0) or higher. Try the
following things before contacting me:
1) Try using "ZKick -noreset Kickfile"
If this fails, set up your printer correctly and use the command
"ZKick -debug -print Kickfile." Mail me a copy of the output along with a
COMPLETE description of your hardware configuration, and hopefully I'll be
able to determine the problem.
Reaching me
-----------
I can be reached on Bix as dzenc, on the internet as
dzenc@gnu.ai.mit.edu, or on bitnet as dzenc%gnu.ai.mit.edu@mitvma.bitnet.
Special thanks to
-----------------
Dan Babcock for sending me an excellent article that he wrote which
showed how to set up RomTag modules correctly, as well as his many ideas
for bug fixes and improvements.
Dave Haynie, for the MMU code which I pilfered from SetCPU.
And my beta testers:
Martin Allred
Joanne Dow
Frank Edwards
Valentin Pepelea
Erik Quackenbush
Mike Thomas
Apologies to anyone I missed.
History
-------
ZKick 3.01 fixes several MAJOR bugs that were in ZKick 3.0.
ZKick 3.00 allows full relocation of Kickstart 2.0 V37.175, and now
works on 1 Meg machines.
ZKick 2.31 now properly chains the KickTag and KickMem vectors.
This should increase compatibility with other boot surviving programs.
ZKick 2.30 does a version check in its ColdCapture and CoolCapture
routines. Before, it relied on the fact that they were only executed under
1.2/1.3.
ZKick 2.24 hopefully fixes the mmu code! Now it should properly
clear the mmu IF you use the "-mmu" option. Thanks to Christian Schneider
for picking up my silly error.
ZKick 2.23 adds support for delayed GURUs. Normally, exec pokes a
"HELP" into location 0, stores the GURU info at $0100, and restarts the
machine. When exec is restarted, it checks location zero for "HELP,"
stores the GURU info in ExecBase, and clears location 0. Later, exec pops
up an alert. The problem is that ZKick starts Kickstart 2.0 before exec
gets a chance to display the alert. ZKick now checks for a delayed GURU
and pokes "HELP" back into location 0 before starting Kickstart 2.0.
ZKick 2.22 changes the default behavior to NOT reseting the mmu, as
many people said that they couldn't get it to work on 020/030 machines
unless this option was off.
ZKick 2.21 adds the "-print" option.
ZKick 2.20 adds many new command line options.
ZKick 2.10b fixes a problem which caused ZKick to configure each
device twice.
ZKick 2.10a fixes a typo in Zkick 2.10, which caused it not to
recognize an MMU ('=' instead of '==').
ZKick 2.10 employs better error checking. In addition, if an MMU
exists, it clears it before starting 2.0.
ZKick 2.01 fixes a bug which caused ZKick not to work with most
autoboot controllers.
ZKick 2.0 is the first "public" release.
-Dan
-----------------------
P.S. This is my first attempt at assembler programming on the 68000.
I hope you enjoy the results!!!